<?php

# http://projects:8081/cdapp-2kt-api/api/flow_ntfm_load_snapshot.php

include_once '_portal.php';

function createSnapTable() {
  $sql = "CREATE TABLE IF NOT EXISTS `2kt_flow_record_snapshot` (
    `snapTime` datetime NOT NULL,
    `begTime` datetime NOT NULL,
    `snapData` json DEFAULT NULL,
    `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`snapTime`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
  return exec_sql($sql);
}

function makeSnap() {
  // 快照时间
  $minute = intval(date('i'));
  $target_minute = $minute < 15 ? '00' : ($minute < 30 ? '15' : ($minute < 45 ? '30' : '45'));
  $snapTime = date('Y-m-d H') . ':' . $target_minute . ':00';
  $snapData = null;
  // 检查是否已经存在当前时刻快照数据
  $sql = "SELECT COUNT(*) FROM `2kt_flow_record_snapshot` WHERE `snapTime` = '{$snapTime}'";
  $isExisted = exec_sql($sql)[0]['COUNT(*)'] > 0;
  if (!$isExisted) {
    // 设置起止范围
    // 当前时间-4小时, 以整点为单位
    $begTime = date('Y-m-d H', time() - param('NTFM_SNAPSHOT_HOURS_BEFORE') * 3600) . ':00:00';
    // 当前时间+20小时, 以整点为单位
    $endTime = date('Y-m-d H', time() + param('NTFM_SNAPSHOT_HOURS_AFTER') * 3600) . ':00:00';
    $updateTime = date('Y-m-d H:i:s');
    // 检索对应 moment 段内的 cotent 字段
    $sql = "SELECT `content` FROM `2kt_flow_record` WHERE `moment` >= '{$begTime}' AND `moment`<='{$endTime}'";
    $result = exec_sql($sql);
    if ($result) {
      // 如果表格不存在则新建表格
      createSnapTable();
      $snapData = json_stringify(query_parse($result));
      // 如果流量数据表检索到数据, 则转换为 JSON 保存到快照表内, 仅保存起始时刻 moment
      $sql = "INSERT INTO `2kt_flow_record_snapshot`(`snapTime`, `begTime`, `snapData`, `updateTime`) VALUES ('{$snapTime}','{$begTime}','{$snapData}','{$updateTime}')";
      exec_sql($sql);
    }
  }
  return $snapData;
}
